import { reactive } from "vue";
import { IBaseConfig } from "@/interface";
import { BaseConfigLiteral } from "@/enum";

const bstConfig = reactive({
  baseLineWidth: 30, // 指针高度
  baseLineRotateZ: 220, // 指针角度
  baseItemRate: 200, // 节点角度
  baseNodeGap: 27, // 两个节点相隔距离

  baseLineOffset: 8, // 指针的left
  baseLineTop: 40, // 指针的top
});

// 初始化配置
const initConfig: {
  lineWidth: number;
  lineAngle: number;
  baseLineTop: number;
  baseLineOffset: number;
  baseNodeGap: number;
  nodeWidth: number;
  lineExpandAngle: number;
  maxAngle: number;
} = {
  lineWidth: 36, // 指针长度
  lineAngle: 40, // 指针角度
  baseLineTop: 40, // 指针的top
  baseLineOffset: 8, // 指针的left
  baseNodeGap: 35,  // 两个节点相隔距离
  nodeWidth: 45, // 节点宽度
  lineExpandAngle: 15, // 指针扩容时, 每次扩容角度
  maxAngle: 70  // 指针最大角度
};

// 基础配置
const baseConfig: IBaseConfig = reactive<IBaseConfig>({
  levelInterval: 48, // 父节点和子节点的距离
});

const setConfig = (key: BaseConfigLiteral, value: any) => {
  baseConfig[key] = value;
};

export { bstConfig, initConfig, baseConfig, setConfig };
